Amazon EKS Auto Mode 是 AWS 提供的全託管 Kubernetes 服務模式,能夠自動管理節點生命週期、容量規劃和基礎設施配置。本指南將詳細介紹如何配置 kubeconfig、驗證叢集連線,以及部署測試應用來驗證 Auto Mode 的功能。
kubeconfig 是 kubectl 用來連接 Kubernetes 叢集的配置檔案。透過 AWS CLI 可以自動產生並配置這個檔案。
# 更新 kubeconfig 以連接到 EKS 叢集
# --region: 指定叢集所在的 AWS 區域
# --name: 指定叢集名稱
aws eks update-kubeconfig --region us-west-2 --name my-auto-mode-cluster
執行結果說明:
~/.kube/config
中新增或更新叢集配置確認 kubectl 能夠成功連接到 EKS 叢集並取得叢集資訊。
# 顯示叢集基本資訊
# 包含 API Server 版本、端點等重要資訊
kubectl cluster-info
# 列出叢集中的所有節點
# 在 Auto Mode 中,節點會根據工作負載需求自動建立
kubectl get nodes
預期輸出範例:
Kubernetes control plane is running at https://[cluster-endpoint]
CoreDNS is running at https://[cluster-endpoint]/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
NAME STATUS ROLES AGE VERSION
ip-10-0-1-100.us-west-2.compute.internal Ready <none> 5m v1.28.3-eks-4f4795d
建立一個完整的 YAML 檔案,包含 Deployment 和 Service 資源,用於測試 EKS Auto Mode 的自動擴展功能。
echo "
# 此檔案包含 Deployment 和 Service 兩個 Kubernetes 資源
# Deployment: 管理 Pod 的生命週期和副本數量
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
labels:
app: nginx-test
spec:
# 設定 3 個副本,測試 Auto Mode 的節點自動配置
replicas: 3
selector:
matchLabels:
app: nginx-test
template:
metadata:
labels:
app: nginx-test
spec:
containers:
- name: nginx
image: nginx:1.21 # 使用穩定版本的 Nginx
ports:
- containerPort: 80
# 資源限制:幫助 Auto Mode 進行容量規劃
resources:
requests:
cpu: 100m # 最少需要 0.1 CPU 核心
memory: 128Mi # 最少需要 128MB 記憶體
limits:
cpu: 200m # 最多使用 0.2 CPU 核心
memory: 256Mi # 最多使用 256MB 記憶體
---
# Service: 提供網路存取和負載平衡
apiVersion: v1
kind: Service
metadata:
name: nginx-service
annotations:
# 設定 AWS LoadBalancer 為公開型(internet-facing)
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
spec:
selector:
app: nginx-test
ports:
- protocol: TCP
port: 80
targetPort: 80
# LoadBalancer 類型會自動建立 AWS Load Balancer
type: LoadBalancer
" > nginx-deployment-service.yaml
YAML 檔案重點說明:
將 YAML 檔案套用到 Kubernetes 叢集中。
# 套用 YAML 配置檔案到叢集
# -f: 指定檔案路徑
kubectl apply -f nginx-deployment-service.yaml
執行過程:
監控應用部署進度和狀態。
# 檢查 Deployment 狀態
# 顯示期望副本數、當前副本數、可用副本數
kubectl get deployments
# 檢查 Pod 狀態和分佈
# 觀察 Pod 是否均勻分佈在不同節點上
kubectl get pods -o wide
# 檢查 Service 狀態
# 特別注意 LoadBalancer 的 EXTERNAL-IP
kubectl get services
狀態檢查重點:
3/3
Running
<pending>
變為實際 IP 位址EKS Auto Mode 的核心功能是自動管理節點,根據工作負載需求動態調整基礎設施。
# 檢查節點狀態和詳細資訊
# -o wide: 顯示更多欄位,包含內部/外部 IP、OS、核心版本等
kubectl get nodes -o wide
# 檢查特定節點的詳細資訊
# 包含容量、已分配資源、系統資訊等
kubectl describe nodes
Auto Mode 節點管理特色:
# 檢查節點資源使用情況
kubectl top nodes
# 檢查 Pod 資源使用情況
kubectl top pods
# 檢查叢集事件,觀察 Auto Mode 的自動化操作
kubectl get events --sort-by='.lastTimestamp'
# 檢查 Auto Mode 相關的系統 Pod
kubectl get pods -n kube-system
kubeconfig 配置失敗
# 檢查 AWS CLI 配置
aws sts get-caller-identity
# 確認叢集存在
aws eks describe-cluster --name my-auto-mode-cluster --region us-west-2
Pod 無法啟動
# 檢查 Pod 詳細狀態
kubectl describe pod <pod-name>
# 檢查 Pod 日誌
kubectl logs <pod-name>
LoadBalancer 無法取得外部 IP
# 檢查 AWS Load Balancer Controller
kubectl get pods -n kube-system | grep aws-load-balancer
# 檢查 Service 事件
kubectl describe service nginx-service
#取得Service ,看NLB自動產生的DNS。
kubectl get svc
輸入DNS就可以看到架設成功NGINX的畫面
透過本指南,你已經學會了:
EKS Auto Mode 大幅簡化了 Kubernetes 叢集管理,讓開發者能專注於應用開發而非基礎設施管理。